/**
 * @ Author: Yoann Meclot. MSay2
 * @ Created on: 2020-08-28 09:48:25
 * @ Modified on: 2020-09-29 09:15:56
 * 
 * @version 1.4
 */
/**
 * Copyright (c) 2020 MSay2, Yoann Meclot - @msay2/tspoet
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { TSType } from "./TSType.js";
/**
 * TSPoet is a mean to create TypeScript source files.
 *
 * The created files is Class, Enumeration, Interface and Custom Element.
 *
 * TSPoet allows you to include properties, constants, methods and your code block.
 *
 * @class TSPoet
 * @version 1.2
 */
export declare class TSPoet {
    /**
     * Create and write a file.
     *
     * @param path The location path to generate the file.
     * @param tsType The object type to be building.
     * @throws {NullPointerException} Check if the path is null.
     * @throws {NullPointerException} Check if the TSType object is null.
     * @type {void}
     * @since 1.0
     */
    static writeFile(path: string, tsType: TSType): void;

    /**
     * Wrinte in file without replace the last text.
     *
     * @param path The location path to generate the file.
     * @param className The name of your file.
     * @param tsType The object type to buildind.
     * @throws {NullPointerException} Check if the path is null.
     * @throws {NullPointerException} Check if the fileName is null.
     * @throws {NullPointerException} Check if the TSType object is null.
     * @type {void}
     * @since 1.1
     */
    static writeInFile(path: string, fileName: string, tsType: TSType): void;

    /**
     * Create a file without content.
     *
     * @param path The location path to generate the file.
     * @param name The name of the file to generate.
     * @throws {NullPointerException} Check if the path is null.
     * @throws {NullPointerException} Check if the name of file is null.
     * @type {void}
     * @since 1.2
     */
    static createFileStream(path: string, name: string): void;
}
/**
 * Internal enum for TSPoet.
 *
 * @ignore
 */
export declare enum Kind 
{
    CLASS = "class",
    ENUM = "enum",
    INTERFACE = "interface"
}
/**
 * Internal enum contain the all modifiers TypeScript.
 */
export declare enum Modifier 
{
    EXPORT = "export",
    PUBLIC = "public",
    STATIC = "static",
    PRIVATE = "private",
    ABSTRACT = "abstract",
    PROTECTED = "protected",
    READONLY = "readonly"
}
/**
 * The TypeName class allows to you join a type of property, method, super class ...etc
 *
 * Set a default constant for join primitive type or for join a custom type set the TypeName.get method.
 * @example
 * TypeName.TYPE_VOID
 * TypeName.TYPE_BOOLEAN
 * TypeName.TYPE_STRING
 * TypeName.TYPE_NUMBER
 * TypeName.TYPE_ANY
 * TypeName.get("MyType")
 *
 * @class TypeName
 * @version 1.0
 */
export declare class TypeName 
{
    static TYPE_VOID: TypeName;
    static TYPE_BOOLEAN: TypeName;
    static TYPE_STRING: TypeName;
    static TYPE_NUMBER: TypeName;
    static TYPE_ANY: TypeName;
    private nameType;

    private constructor();

    /**
     * Get a custom name object.
     *
     * @param name The name of the object.
     * @throws {NullPointerException} Check if the name is null.
     * @throws {IllegalStateException} Use TypeName.transtypeTo method.
     * @type {TypeName}
     * @since 1.0
     */
    static get(name: string): TypeName;

    /**
     * Transtype the object type.
     *
     * @param args The names of the objects.
     * @type {TypeName}
     * @since 1.0
     */
    transtypeTo(...args: string[]): TypeName;
}
//# sourceMappingURL=TSPoet.d.ts.map